import {
  setMinutesLater,
  setStartTime,
  setEndTime,
  getCurrentTime,
} from '../support/utils/time'

const TOKEN_FILE = 'token'
const SHELF_START_TIME = setStartTime() + '{enter}'
const SHELF_END_TIME = setEndTime() + '{enter}'
const LIVE_START_TIME = setMinutesLater(15) + '{enter}'
const LIVE_END_TIME = setMinutesLater(50) + '{enter}'
const COVER = 'cypress/fixtures/cover.jpg'
const SET_TO_DEFAULT = 'UPDATE `sport-test`.live_anchor SET status = 1'

describe('MSKJ 管理后台（直播管理）', () => {
  before(() => {
    cy.task('executeSql', SET_TO_DEFAULT)
  })

  beforeEach(() => {
    cy.fixture(TOKEN_FILE).then(token => {
      window.localStorage.setItem('token', token.token)
    })
  })

  it('创建直播间', () => {
    cy.intercept('*/common/upload/wx/img').as('upload_success')
    cy.intercept('*/live/room/create').as('mini_live_success')
    cy.intercept('*/live/add').as('add_success')

    // 访问直播管理页
    cy.visit('/#/operations-manage/live-manage/live-manage')

    // 输入直播标题创建新直播
    cy.contains('新建直播').click({ force: true })
    cy.contains('备注主题').next().type(`直播 ${getCurrentTime()}`)

    // 上传封面图
    cy.get('input[type=file]').selectFile(COVER, { force: true })
    cy.wait('@upload_success')

    // 选择场馆和场地
    cy.setStadium(Cypress.env('sport_center'))

    // 设置上架的开始和结束时间
    cy.get('.el-range-input').eq(0).type(SHELF_START_TIME)
    cy.get('.el-range-input').eq(1).type(SHELF_END_TIME)

    // 设置推流和开播时间
    cy.get('.el-range-input').eq(2).type(LIVE_START_TIME)
    cy.get('.el-range-input').eq(3).type(LIVE_END_TIME)
    cy.get('.el-range-input').eq(4).type(LIVE_START_TIME)
    cy.get('.el-range-input').eq(5).type(LIVE_END_TIME)

    //  设置直播配置
    cy.contains('摄像机推流直播').click()
    cy.contains(Cypress.env('camera')).click()

    cy.get('.el-drawer__body').then($body => {
      cy.get('.is-transparent').last().click({ force: true })

      // 判断页面是否有"直播地址B"，如更有则选择2个主播，否则选择1个主播
      if ($body.text().includes('直播地址B')) {
        cy.setAnchor(Cypress.env('anchor1'))
        cy.setAnchor(Cypress.env('anchor2'))
      } else {
        cy.setAnchor(Cypress.env('anchor1'))
      }
    })

    // 确认创建直播间并确定
    cy.contains('开始创建').click({ force: true })
    cy.contains('创建直播间成功').should('exist')
    cy.wait('@mini_live_success')
    cy.contains('确定').click()
    cy.contains('新增成功').should('exist')
    cy.wait('@add_success')
  })
})
